package com.corpgovernment.organization.dto;

import lombok.Data;

import java.util.List;

@Data
public class OpenCardReq {

    /**
     * obk_ + 公司编号
     */
    private String Appkey;
    /**
     * 令牌
     */
    private String Ticket;
    /**
     * 	公司编号，由携程方提供
     */
    private String CorporationID;
    /**
     * 开卡员工集合
     */
    private List<AuthenticationInfo> AuthenticationInfoList;

    @Data
    public static class AuthenticationInfo{
        /**
         * 序号,用来定位跟踪错误数组的
         * 我们系统uid唯一不重复可代替 所以不传也行
         */
        private Integer Sequence;
        /**
         * 开卡员工信息
         */
        private Authentication authentication;
    }

    @Data
    public static class Authentication{
        /**
         * 主键ID
         */
        private String EmployeeID;
        /**
         * 子公司名称
         */
        private String SubAccountName;
        /**
         * 邮箱
         */
        private String Email;
        /**
         * 是否发送开通邮件，true=是，false=否；空，默认为false。如有开通自动开卡功能的客户，这个字段传"true"，否则将无法收到开卡成功邮件，导致用户无法得知卡号和密码信息。为虚卡时不发送邮件，该值设置无效。
         */
        private Boolean IsSendEMail;
        /**
         * 名称
         */
        private String Name;
        /**
         * 国籍二字码
         */
        private String Nationality;
        /**
         * 性别
         */
        private String Gender;
        /**
         * 出生日期
         */
        private String Birthday;
        /**
         * 手机号码
         */
        private String MobilePhone;
        /**
         * 区号
         */
        private Integer CountryCode;
        /**
         * 在职情况
         * A-在职，业务操作为新建卡或者更新卡；
         * I-离职，业务操作为关卡。
         */
        private String Valid;
        /**
         * 法人公司 部门五
         */
        private String Dept5;

        /**
         * 	邮件短信发送配置（如未配置发送功能，无需传参）
         */
        private List<CorpEmailSendRuleEntity> CorpEmailSendRules;
    }


    @Data
    public static class CorpEmailSendRuleEntity{
        /**
         * 【邮件发送节点】
         *
         * 机票发送节点：暂缓确认:D；成交确认:S；退票确认:R；改签确认:G；Itinerary和Invoice确认单：I
         *
         * 酒店发送节点：确认客户:C；授权确认:A；已成交:S；Itinerary和Invoice确认单:I；退订确认：HC
         *
         * 火车票发送节点：成交确认：S；退票确认：TR；改签确认：TC
         *
         * 行程打包发送节点：审批通过: SM
         *
         * 【短信发送节点】
         *
         * 机票发送节点：暂缓确认:D；成交确认:S；退票确认:R；改签确认:G；
         *
         * 注意：
         *
         * （1）机票发送节点：D，S，R，G，这四个节点，国内跟国际必须同时有值（BusinessType=1和2捆绑传输，即该场景一个发送节点需要同时传递两条记录）。
         *
         * （2）当同一业务类型(BusinessType)，同一发送节点发送多条信息时，将以最后一条信息为准。
         */
        private String EmailSendNode;

        /**
         * 邮件--接收人邮件地址（可接受多个邮箱地址，用英文分号隔开）
         *
         * (不支持大小写敏感的邮箱，携程发送邮件默认使用小写字母邮箱进行发送)
         */
        private String ReceiverEMail;

        /**
         * 是否发送持卡人(T/F)
         */
        private String IsSendCardHolder;
        /**
         * 邮件--是否发送订单联系人(T/F)
         */
        private String IsSendContactor;
        /**
         * 业务类型，1-国内机票、2-国际机票、4-酒店、8-行程打包、16-火车票
         */
        private Integer BusinessType;
        /**
         *邮件/短信规则是否有效(T/F);
         *
         * 注意：
         *
         * （1）【邮件】机票发送节点：D，S，R，G，这四个节点，国内跟国际IsSendCardHolder，IsSendContactor，EmailSendRuleValid 这三个配置项的值，必须一致。
         *
         * （2）【短信】机票发送节点：D，S，两个节点，国内跟国际IsSendCardHolder，EmailSendRuleValid 这两个配置项的值，必须一致。
         *
         * （3）【短信】机票发送节点：R节点，国内跟国际IsSendCardHolder，IsRefundPassenger，EmailSendRuleValid 这三个配置项的值，必须一致。
         *
         * （4）【短信】机票发送节点：G节点，国内跟国际IsSendCardHolder，IsChangePassenger，EmailSendRuleValid 这三个配置项的值，必须一致。
         */
        private String EmailSendRuleValid;
    }
}
